// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.31.0
// 	protoc        v3.21.12
// source: myfitt.proto

package myfitt

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// цели клиента
type PersonalGoal int32

const (
	PersonalGoal_unknown_goal       PersonalGoal = 0  // неизвестно
	PersonalGoal_lose_weight        PersonalGoal = 1  //  похудеть
	PersonalGoal_childrens_training PersonalGoal = 2  //  тренировки для детей
	PersonalGoal_relief             PersonalGoal = 3  //  рельеф
	PersonalGoal_strength           PersonalGoal = 4  //  сила и выносливость
	PersonalGoal_antistress         PersonalGoal = 5  //  снять стресс
	PersonalGoal_learn_swim         PersonalGoal = 6  //  научиться плавать
	PersonalGoal_flexibility        PersonalGoal = 7  //  гибкость и мобильность
	PersonalGoal_body_balance       PersonalGoal = 8  //  гармоничное развитие тела
	PersonalGoal_fun                PersonalGoal = 9  //  весело провести время
	PersonalGoal_rehabilitation     PersonalGoal = 10 //  реабилитация и восстановление
)

// Enum value maps for PersonalGoal.
var (
	PersonalGoal_name = map[int32]string{
		0:  "unknown_goal",
		1:  "lose_weight",
		2:  "childrens_training",
		3:  "relief",
		4:  "strength",
		5:  "antistress",
		6:  "learn_swim",
		7:  "flexibility",
		8:  "body_balance",
		9:  "fun",
		10: "rehabilitation",
	}
	PersonalGoal_value = map[string]int32{
		"unknown_goal":       0,
		"lose_weight":        1,
		"childrens_training": 2,
		"relief":             3,
		"strength":           4,
		"antistress":         5,
		"learn_swim":         6,
		"flexibility":        7,
		"body_balance":       8,
		"fun":                9,
		"rehabilitation":     10,
	}
)

func (x PersonalGoal) Enum() *PersonalGoal {
	p := new(PersonalGoal)
	*p = x
	return p
}

func (x PersonalGoal) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PersonalGoal) Descriptor() protoreflect.EnumDescriptor {
	return file_myfitt_proto_enumTypes[0].Descriptor()
}

func (PersonalGoal) Type() protoreflect.EnumType {
	return &file_myfitt_proto_enumTypes[0]
}

func (x PersonalGoal) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PersonalGoal.Descriptor instead.
func (PersonalGoal) EnumDescriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{0}
}

// пол
type Sex int32

const (
	Sex_undefined Sex = 0 // не определен
	Sex_male      Sex = 1 // мужской
	Sex_female    Sex = 2 // женский
)

// Enum value maps for Sex.
var (
	Sex_name = map[int32]string{
		0: "undefined",
		1: "male",
		2: "female",
	}
	Sex_value = map[string]int32{
		"undefined": 0,
		"male":      1,
		"female":    2,
	}
)

func (x Sex) Enum() *Sex {
	p := new(Sex)
	*p = x
	return p
}

func (x Sex) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Sex) Descriptor() protoreflect.EnumDescriptor {
	return file_myfitt_proto_enumTypes[1].Descriptor()
}

func (Sex) Type() protoreflect.EnumType {
	return &file_myfitt_proto_enumTypes[1]
}

func (x Sex) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Sex.Descriptor instead.
func (Sex) EnumDescriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{1}
}

type TrainingSession_Type int32

const (
	TrainingSession_unknown TrainingSession_Type = 0
	TrainingSession_step    TrainingSession_Type = 1 // шаги
	TrainingSession_pulse   TrainingSession_Type = 2 // пульсовые тренировки
)

// Enum value maps for TrainingSession_Type.
var (
	TrainingSession_Type_name = map[int32]string{
		0: "unknown",
		1: "step",
		2: "pulse",
	}
	TrainingSession_Type_value = map[string]int32{
		"unknown": 0,
		"step":    1,
		"pulse":   2,
	}
)

func (x TrainingSession_Type) Enum() *TrainingSession_Type {
	p := new(TrainingSession_Type)
	*p = x
	return p
}

func (x TrainingSession_Type) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TrainingSession_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_myfitt_proto_enumTypes[2].Descriptor()
}

func (TrainingSession_Type) Type() protoreflect.EnumType {
	return &file_myfitt_proto_enumTypes[2]
}

func (x TrainingSession_Type) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TrainingSession_Type.Descriptor instead.
func (TrainingSession_Type) EnumDescriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{2, 0}
}

// все что выше 900 это служебные значения, их не давать выбирать клиенту в UI
type TrainingSession_Kind int32

const (
	TrainingSession_fitness     TrainingSession_Kind = 0   // общая категория - кардио, силовая тренировка, йога, гребля боевые искусства, растяжка гольф
	TrainingSession_walk        TrainingSession_Kind = 1   // ходьба
	TrainingSession_run         TrainingSession_Kind = 2   // бег
	TrainingSession_swim        TrainingSession_Kind = 3   // плавание
	TrainingSession_cycle       TrainingSession_Kind = 4   // велосипед
	TrainingSession_ski         TrainingSession_Kind = 5   // лыжи, горные лыжи
	TrainingSession_rowing      TrainingSession_Kind = 6   // гребля
	TrainingSession_games       TrainingSession_Kind = 7   // игровые/командные (футбол, волейбол, хоккей, баскетбол и т.п.)
	TrainingSession_set_fitness TrainingSession_Kind = 900 // дополнительное значение варианта fitness (чтобы избежать игнорирования обновления)
	TrainingSession_test        TrainingSession_Kind = 996 // тест
	TrainingSession_visit       TrainingSession_Kind = 997 // визит
	TrainingSession_other       TrainingSession_Kind = 998 // прочее
)

// Enum value maps for TrainingSession_Kind.
var (
	TrainingSession_Kind_name = map[int32]string{
		0:   "fitness",
		1:   "walk",
		2:   "run",
		3:   "swim",
		4:   "cycle",
		5:   "ski",
		6:   "rowing",
		7:   "games",
		900: "set_fitness",
		996: "test",
		997: "visit",
		998: "other",
	}
	TrainingSession_Kind_value = map[string]int32{
		"fitness":     0,
		"walk":        1,
		"run":         2,
		"swim":        3,
		"cycle":       4,
		"ski":         5,
		"rowing":      6,
		"games":       7,
		"set_fitness": 900,
		"test":        996,
		"visit":       997,
		"other":       998,
	}
)

func (x TrainingSession_Kind) Enum() *TrainingSession_Kind {
	p := new(TrainingSession_Kind)
	*p = x
	return p
}

func (x TrainingSession_Kind) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TrainingSession_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_myfitt_proto_enumTypes[3].Descriptor()
}

func (TrainingSession_Kind) Type() protoreflect.EnumType {
	return &file_myfitt_proto_enumTypes[3]
}

func (x TrainingSession_Kind) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TrainingSession_Kind.Descriptor instead.
func (TrainingSession_Kind) EnumDescriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{2, 1}
}

type TrainingSession_Element int32

const (
	TrainingSession_undefined TrainingSession_Element = 0 // не выбрано
	TrainingSession_chart     TrainingSession_Element = 1 // график
	TrainingSession_medals    TrainingSession_Element = 2 // медали
)

// Enum value maps for TrainingSession_Element.
var (
	TrainingSession_Element_name = map[int32]string{
		0: "undefined",
		1: "chart",
		2: "medals",
	}
	TrainingSession_Element_value = map[string]int32{
		"undefined": 0,
		"chart":     1,
		"medals":    2,
	}
)

func (x TrainingSession_Element) Enum() *TrainingSession_Element {
	p := new(TrainingSession_Element)
	*p = x
	return p
}

func (x TrainingSession_Element) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TrainingSession_Element) Descriptor() protoreflect.EnumDescriptor {
	return file_myfitt_proto_enumTypes[4].Descriptor()
}

func (TrainingSession_Element) Type() protoreflect.EnumType {
	return &file_myfitt_proto_enumTypes[4]
}

func (x TrainingSession_Element) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TrainingSession_Element.Descriptor instead.
func (TrainingSession_Element) EnumDescriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{2, 2}
}

type StepDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// суммарное количество шагов в этот день
	Steps uint32 `protobuf:"varint,1,opt,name=steps,proto3" json:"steps,omitempty"`
	// эпоходень за который считаются шаги
	Day uint32 `protobuf:"varint,2,opt,name=day,proto3" json:"day,omitempty"`
	// пройденное расстояние в метрах
	Meters uint32 `protobuf:"varint,3,opt,name=meters,proto3" json:"meters,omitempty"`
	// показатель подвижности в процентах
	MovementFactor uint32 `protobuf:"varint,4,opt,name=movement_factor,json=movementFactor,proto3" json:"movement_factor,omitempty"`
	// детализация шагов (опционально)
	Samples []*StepsData `protobuf:"bytes,5,rep,name=samples,proto3" json:"samples,omitempty"`
	// список устройств с которых были получены данные
	Device []string `protobuf:"bytes,8,rep,name=device,proto3" json:"device,omitempty"`
}

func (x *StepDetails) Reset() {
	*x = StepDetails{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StepDetails) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StepDetails) ProtoMessage() {}

func (x *StepDetails) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StepDetails.ProtoReflect.Descriptor instead.
func (*StepDetails) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{0}
}

func (x *StepDetails) GetSteps() uint32 {
	if x != nil {
		return x.Steps
	}
	return 0
}

func (x *StepDetails) GetDay() uint32 {
	if x != nil {
		return x.Day
	}
	return 0
}

func (x *StepDetails) GetMeters() uint32 {
	if x != nil {
		return x.Meters
	}
	return 0
}

func (x *StepDetails) GetMovementFactor() uint32 {
	if x != nil {
		return x.MovementFactor
	}
	return 0
}

func (x *StepDetails) GetSamples() []*StepsData {
	if x != nil {
		return x.Samples
	}
	return nil
}

func (x *StepDetails) GetDevice() []string {
	if x != nil {
		return x.Device
	}
	return nil
}

type HrDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// минимальный пульс
	MinHr uint32 `protobuf:"varint,1,opt,name=min_hr,json=minHr,proto3" json:"min_hr,omitempty"`
	// средний пульс
	AvgHr uint32 `protobuf:"varint,2,opt,name=avg_hr,json=avgHr,proto3" json:"avg_hr,omitempty"`
	// максимальный  пульс
	MaxHr uint32 `protobuf:"varint,3,opt,name=max_hr,json=maxHr,proto3" json:"max_hr,omitempty"`
	// минимальная нагрузка
	MinHardness float64 `protobuf:"fixed64,4,opt,name=min_hardness,json=minHardness,proto3" json:"min_hardness,omitempty"`
	// средняя нагрузка
	AvgHardness float64 `protobuf:"fixed64,5,opt,name=avg_hardness,json=avgHardness,proto3" json:"avg_hardness,omitempty"`
	// максимальная нагрузка
	MaxHardness float64 `protobuf:"fixed64,6,opt,name=max_hardness,json=maxHardness,proto3" json:"max_hardness,omitempty"`
	// данные профиля на момент тренировки
	Profile *Profile `protobuf:"bytes,7,opt,name=profile,proto3" json:"profile,omitempty"`
	// список устройств с которых была получена тренировка
	Device []string `protobuf:"bytes,8,rep,name=device,proto3" json:"device,omitempty"`
	// детализация пульса (опционально)
	Samples []*TrainingData `protobuf:"bytes,9,rep,name=samples,proto3" json:"samples,omitempty"`
}

func (x *HrDetails) Reset() {
	*x = HrDetails{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *HrDetails) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HrDetails) ProtoMessage() {}

func (x *HrDetails) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HrDetails.ProtoReflect.Descriptor instead.
func (*HrDetails) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{1}
}

func (x *HrDetails) GetMinHr() uint32 {
	if x != nil {
		return x.MinHr
	}
	return 0
}

func (x *HrDetails) GetAvgHr() uint32 {
	if x != nil {
		return x.AvgHr
	}
	return 0
}

func (x *HrDetails) GetMaxHr() uint32 {
	if x != nil {
		return x.MaxHr
	}
	return 0
}

func (x *HrDetails) GetMinHardness() float64 {
	if x != nil {
		return x.MinHardness
	}
	return 0
}

func (x *HrDetails) GetAvgHardness() float64 {
	if x != nil {
		return x.AvgHardness
	}
	return 0
}

func (x *HrDetails) GetMaxHardness() float64 {
	if x != nil {
		return x.MaxHardness
	}
	return 0
}

func (x *HrDetails) GetProfile() *Profile {
	if x != nil {
		return x.Profile
	}
	return nil
}

func (x *HrDetails) GetDevice() []string {
	if x != nil {
		return x.Device
	}
	return nil
}

func (x *HrDetails) GetSamples() []*TrainingData {
	if x != nil {
		return x.Samples
	}
	return nil
}

type TrainingSession struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// уникальный идентификатор сессии
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// время синхронизации
	SyncMillis int64 `protobuf:"varint,2,opt,name=sync_millis,json=syncMillis,proto3" json:"sync_millis,omitempty"`
	// начало
	StartMillis int64 `protobuf:"varint,3,opt,name=start_millis,json=startMillis,proto3" json:"start_millis,omitempty"`
	// окончание
	StopMillis int64 `protobuf:"varint,4,opt,name=stop_millis,json=stopMillis,proto3" json:"stop_millis,omitempty"`
	// начисленно баллов за тренировку
	Skllzz float64 `protobuf:"fixed64,6,opt,name=skllzz,proto3" json:"skllzz,omitempty"`
	// признак удаленной сессии
	Deleted bool `protobuf:"varint,7,opt,name=deleted,proto3" json:"deleted,omitempty"`
	// идентификатор источника (уникален для мобильного телефона)
	SourceId string `protobuf:"bytes,8,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"`
	// версия набора полей данных
	Version uint32 `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty"`
	// Вариант детализации тренировки
	//
	// Types that are assignable to Details:
	//
	//	*TrainingSession_Steps
	//	*TrainingSession_Hr
	Details isTrainingSession_Details `protobuf_oneof:"details"`
	// часовой пояс сессии
	Timezone string `protobuf:"bytes,12,opt,name=timezone,proto3" json:"timezone,omitempty"`
	// созжено калорий за тренировку
	Kkal float64 `protobuf:"fixed64,13,opt,name=kkal,proto3" json:"kkal,omitempty"`
	// идентификатор профиля которому принадлежит тренировка
	ProfileId string `protobuf:"bytes,14,opt,name=profile_id,json=profileId,proto3" json:"profile_id,omitempty"`
	// номер дня активности в часовом поясе клиента
	ActivityDay int64 `protobuf:"varint,15,opt,name=activity_day,json=activityDay,proto3" json:"activity_day,omitempty"`
	// начислено баллов за тренировку без учета действия артефактов
	SkllzzWithoutArtifacts float64 `protobuf:"fixed64,16,opt,name=skllzz_without_artifacts,json=skllzzWithoutArtifacts,proto3" json:"skllzz_without_artifacts,omitempty"`
	// начислено баллов за тренировку с учетом артефактов
	SkllzzWithArtifacts float64 `protobuf:"fixed64,17,opt,name=skllzz_with_artifacts,json=skllzzWithArtifacts,proto3" json:"skllzz_with_artifacts,omitempty"`
	// Сопроводительный текст
	Description string `protobuf:"bytes,21,opt,name=description,proto3" json:"description,omitempty"`
	// Фотка к занятию
	PhotoUrl      string               `protobuf:"bytes,22,opt,name=photo_url,json=photoUrl,proto3" json:"photo_url,omitempty"`
	Kind          TrainingSession_Kind `protobuf:"varint,32,opt,name=kind,proto3,enum=myfitt.TrainingSession_Kind" json:"kind,omitempty"`      // вид активности
	ArbitraryKind string               `protobuf:"bytes,33,opt,name=arbitrary_kind,json=arbitraryKind,proto3" json:"arbitrary_kind,omitempty"` // вид активности в форме произвольного названия от источника данных (если поддерживается)
}

func (x *TrainingSession) Reset() {
	*x = TrainingSession{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TrainingSession) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TrainingSession) ProtoMessage() {}

func (x *TrainingSession) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TrainingSession.ProtoReflect.Descriptor instead.
func (*TrainingSession) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{2}
}

func (x *TrainingSession) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *TrainingSession) GetSyncMillis() int64 {
	if x != nil {
		return x.SyncMillis
	}
	return 0
}

func (x *TrainingSession) GetStartMillis() int64 {
	if x != nil {
		return x.StartMillis
	}
	return 0
}

func (x *TrainingSession) GetStopMillis() int64 {
	if x != nil {
		return x.StopMillis
	}
	return 0
}

func (x *TrainingSession) GetSkllzz() float64 {
	if x != nil {
		return x.Skllzz
	}
	return 0
}

func (x *TrainingSession) GetDeleted() bool {
	if x != nil {
		return x.Deleted
	}
	return false
}

func (x *TrainingSession) GetSourceId() string {
	if x != nil {
		return x.SourceId
	}
	return ""
}

func (x *TrainingSession) GetVersion() uint32 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (m *TrainingSession) GetDetails() isTrainingSession_Details {
	if m != nil {
		return m.Details
	}
	return nil
}

func (x *TrainingSession) GetSteps() *StepDetails {
	if x, ok := x.GetDetails().(*TrainingSession_Steps); ok {
		return x.Steps
	}
	return nil
}

func (x *TrainingSession) GetHr() *HrDetails {
	if x, ok := x.GetDetails().(*TrainingSession_Hr); ok {
		return x.Hr
	}
	return nil
}

func (x *TrainingSession) GetTimezone() string {
	if x != nil {
		return x.Timezone
	}
	return ""
}

func (x *TrainingSession) GetKkal() float64 {
	if x != nil {
		return x.Kkal
	}
	return 0
}

func (x *TrainingSession) GetProfileId() string {
	if x != nil {
		return x.ProfileId
	}
	return ""
}

func (x *TrainingSession) GetActivityDay() int64 {
	if x != nil {
		return x.ActivityDay
	}
	return 0
}

func (x *TrainingSession) GetSkllzzWithoutArtifacts() float64 {
	if x != nil {
		return x.SkllzzWithoutArtifacts
	}
	return 0
}

func (x *TrainingSession) GetSkllzzWithArtifacts() float64 {
	if x != nil {
		return x.SkllzzWithArtifacts
	}
	return 0
}

func (x *TrainingSession) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *TrainingSession) GetPhotoUrl() string {
	if x != nil {
		return x.PhotoUrl
	}
	return ""
}

func (x *TrainingSession) GetKind() TrainingSession_Kind {
	if x != nil {
		return x.Kind
	}
	return TrainingSession_fitness
}

func (x *TrainingSession) GetArbitraryKind() string {
	if x != nil {
		return x.ArbitraryKind
	}
	return ""
}

type isTrainingSession_Details interface {
	isTrainingSession_Details()
}

type TrainingSession_Steps struct {
	// Отчет по шагам
	Steps *StepDetails `protobuf:"bytes,10,opt,name=steps,proto3,oneof"`
}

type TrainingSession_Hr struct {
	// Отчет по пульсу
	Hr *HrDetails `protobuf:"bytes,11,opt,name=hr,proto3,oneof"`
}

func (*TrainingSession_Steps) isTrainingSession_Details() {}

func (*TrainingSession_Hr) isTrainingSession_Details() {}

type TrainingData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// уникальный идентификатор сессии
	SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	// время синхронизации
	SyncMillis int64 `protobuf:"varint,2,opt,name=sync_millis,json=syncMillis,proto3" json:"sync_millis,omitempty"`
	// время отсчета этой порции данных
	StampMillis int64 `protobuf:"varint,3,opt,name=stamp_millis,json=stampMillis,proto3" json:"stamp_millis,omitempty"`
	// идентификатор источника данных
	DeviceId string `protobuf:"bytes,4,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	// название источника данных
	DeviceName string `protobuf:"bytes,5,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"`
	// среднее значение пульса на интервале
	HrAvg float64 `protobuf:"fixed64,12,opt,name=hrAvg,proto3" json:"hrAvg,omitempty"`
	// длительность интервала в миллисекундах
	Duration int32 `protobuf:"varint,13,opt,name=duration,proto3" json:"duration,omitempty"`
	// баллов за этот интервал
	Skllzz float64 `protobuf:"fixed64,14,opt,name=skllzz,proto3" json:"skllzz,omitempty"`
	// уровень нагрузки от 0 до 1 внутри пульсовой зоны клиента
	Hardness float64 `protobuf:"fixed64,15,opt,name=hardness,proto3" json:"hardness,omitempty"`
	// версия набора полей данных
	Version uint32 `protobuf:"varint,16,opt,name=version,proto3" json:"version,omitempty"`
	// идентификатор профиля которому принадлежит тренировка
	ProfileId string `protobuf:"bytes,17,opt,name=profile_id,json=profileId,proto3" json:"profile_id,omitempty"`
}

func (x *TrainingData) Reset() {
	*x = TrainingData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TrainingData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TrainingData) ProtoMessage() {}

func (x *TrainingData) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TrainingData.ProtoReflect.Descriptor instead.
func (*TrainingData) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{3}
}

func (x *TrainingData) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *TrainingData) GetSyncMillis() int64 {
	if x != nil {
		return x.SyncMillis
	}
	return 0
}

func (x *TrainingData) GetStampMillis() int64 {
	if x != nil {
		return x.StampMillis
	}
	return 0
}

func (x *TrainingData) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *TrainingData) GetDeviceName() string {
	if x != nil {
		return x.DeviceName
	}
	return ""
}

func (x *TrainingData) GetHrAvg() float64 {
	if x != nil {
		return x.HrAvg
	}
	return 0
}

func (x *TrainingData) GetDuration() int32 {
	if x != nil {
		return x.Duration
	}
	return 0
}

func (x *TrainingData) GetSkllzz() float64 {
	if x != nil {
		return x.Skllzz
	}
	return 0
}

func (x *TrainingData) GetHardness() float64 {
	if x != nil {
		return x.Hardness
	}
	return 0
}

func (x *TrainingData) GetVersion() uint32 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *TrainingData) GetProfileId() string {
	if x != nil {
		return x.ProfileId
	}
	return ""
}

type StepsData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// версия набора полей данных
	Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
	// время синхронизации
	SyncMillis int64 `protobuf:"varint,2,opt,name=sync_millis,json=syncMillis,proto3" json:"sync_millis,omitempty"`
	// время начала замера шагов
	StampMillis int64 `protobuf:"varint,3,opt,name=stamp_millis,json=stampMillis,proto3" json:"stamp_millis,omitempty"`
	// длительность интервала замера в миллисекундах
	Duration int32 `protobuf:"varint,4,opt,name=duration,proto3" json:"duration,omitempty"`
	// Шагов на интервале
	Steps int32 `protobuf:"varint,5,opt,name=steps,proto3" json:"steps,omitempty"`
	// идентификатор источника (уникален для мобильного телефона)
	SourceId string `protobuf:"bytes,6,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"`
	// идентификатор источников шагов (названия сенсоров)
	StepSource []string `protobuf:"bytes,7,rep,name=step_source,json=stepSource,proto3" json:"step_source,omitempty"`
}

func (x *StepsData) Reset() {
	*x = StepsData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StepsData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StepsData) ProtoMessage() {}

func (x *StepsData) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StepsData.ProtoReflect.Descriptor instead.
func (*StepsData) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{4}
}

func (x *StepsData) GetVersion() uint32 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *StepsData) GetSyncMillis() int64 {
	if x != nil {
		return x.SyncMillis
	}
	return 0
}

func (x *StepsData) GetStampMillis() int64 {
	if x != nil {
		return x.StampMillis
	}
	return 0
}

func (x *StepsData) GetDuration() int32 {
	if x != nil {
		return x.Duration
	}
	return 0
}

func (x *StepsData) GetSteps() int32 {
	if x != nil {
		return x.Steps
	}
	return 0
}

func (x *StepsData) GetSourceId() string {
	if x != nil {
		return x.SourceId
	}
	return ""
}

func (x *StepsData) GetStepSource() []string {
	if x != nil {
		return x.StepSource
	}
	return nil
}

type Profile struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id            string         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                                 // единый идентификатор
	BirthDate     int32          `protobuf:"varint,6,opt,name=birth_date,json=birthDate,proto3" json:"birth_date,omitempty"` // epoch day (день с  полуночи (00:00:00 UTC) 1 января 1970 года)
	HrRest        int32          `protobuf:"varint,7,opt,name=hr_rest,json=hrRest,proto3" json:"hr_rest,omitempty"`          // пульс в состоянии покоя
	HrMax         int32          `protobuf:"varint,8,opt,name=hr_max,json=hrMax,proto3" json:"hr_max,omitempty"`             // максимальный пульс
	Sex           Sex            `protobuf:"varint,11,opt,name=sex,proto3,enum=myfitt.Sex" json:"sex,omitempty"`             // пол человека
	Weight        float32        `protobuf:"fixed32,12,opt,name=weight,proto3" json:"weight,omitempty"`                      //вес в кг
	PersonalGoals []PersonalGoal `protobuf:"varint,60,rep,packed,name=personal_goals,json=personalGoals,proto3,enum=myfitt.PersonalGoal" json:"personal_goals,omitempty"`
}

func (x *Profile) Reset() {
	*x = Profile{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Profile) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Profile) ProtoMessage() {}

func (x *Profile) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Profile.ProtoReflect.Descriptor instead.
func (*Profile) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{5}
}

func (x *Profile) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Profile) GetBirthDate() int32 {
	if x != nil {
		return x.BirthDate
	}
	return 0
}

func (x *Profile) GetHrRest() int32 {
	if x != nil {
		return x.HrRest
	}
	return 0
}

func (x *Profile) GetHrMax() int32 {
	if x != nil {
		return x.HrMax
	}
	return 0
}

func (x *Profile) GetSex() Sex {
	if x != nil {
		return x.Sex
	}
	return Sex_undefined
}

func (x *Profile) GetWeight() float32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *Profile) GetPersonalGoals() []PersonalGoal {
	if x != nil {
		return x.PersonalGoals
	}
	return nil
}

type Empty struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Empty) Reset() {
	*x = Empty{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Empty) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Empty) ProtoMessage() {}

func (x *Empty) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Empty.ProtoReflect.Descriptor instead.
func (*Empty) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{6}
}

type InputDataset struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Profile  *Profile           `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"`   // профиль пользователя
	Sessions []*TrainingSession `protobuf:"bytes,2,rep,name=sessions,proto3" json:"sessions,omitempty"` // последовательность активностей в произвольном количестве от 1 до 14 включительно
}

func (x *InputDataset) Reset() {
	*x = InputDataset{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *InputDataset) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InputDataset) ProtoMessage() {}

func (x *InputDataset) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use InputDataset.ProtoReflect.Descriptor instead.
func (*InputDataset) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{7}
}

func (x *InputDataset) GetProfile() *Profile {
	if x != nil {
		return x.Profile
	}
	return nil
}

func (x *InputDataset) GetSessions() []*TrainingSession {
	if x != nil {
		return x.Sessions
	}
	return nil
}

type OutputDataSet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Value []float32 `protobuf:"fixed32,1,rep,packed,name=value,proto3" json:"value,omitempty"` // общая оценка + оценка каждой активности
}

func (x *OutputDataSet) Reset() {
	*x = OutputDataSet{}
	if protoimpl.UnsafeEnabled {
		mi := &file_myfitt_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *OutputDataSet) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OutputDataSet) ProtoMessage() {}

func (x *OutputDataSet) ProtoReflect() protoreflect.Message {
	mi := &file_myfitt_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use OutputDataSet.ProtoReflect.Descriptor instead.
func (*OutputDataSet) Descriptor() ([]byte, []int) {
	return file_myfitt_proto_rawDescGZIP(), []int{8}
}

func (x *OutputDataSet) GetValue() []float32 {
	if x != nil {
		return x.Value
	}
	return nil
}

var File_myfitt_proto protoreflect.FileDescriptor

var file_myfitt_proto_rawDesc = []byte{
	0x0a, 0x0c, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06,
	0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x65, 0x70, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03,
	0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x16,
	0x0a, 0x06, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06,
	0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x0e, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12,
	0x2b, 0x0a, 0x07, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x11, 0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x53, 0x74, 0x65, 0x70, 0x73, 0x44,
	0x61, 0x74, 0x61, 0x52, 0x07, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x09, 0x48, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x5f, 0x68, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x48, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x76, 0x67,
	0x5f, 0x68, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x76, 0x67, 0x48, 0x72,
	0x12, 0x15, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x05, 0x6d, 0x61, 0x78, 0x48, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x68,
	0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d,
	0x69, 0x6e, 0x48, 0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x76,
	0x67, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01,
	0x52, 0x0b, 0x61, 0x76, 0x67, 0x48, 0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a,
	0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x48, 0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73,
	0x12, 0x29, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69,
	0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x09,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x54, 0x72,
	0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x73, 0x61, 0x6d, 0x70,
	0x6c, 0x65, 0x73, 0x22, 0xb2, 0x07, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f,
	0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x79,
	0x6e, 0x63, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
	0x74, 0x6f, 0x70, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x6b, 0x6c, 0x6c, 0x7a, 0x7a, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x73, 0x6b,
	0x6c, 0x6c, 0x7a, 0x7a, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1b,
	0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x53, 0x74,
	0x65, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x65,
	0x70, 0x73, 0x12, 0x23, 0x0a, 0x02, 0x68, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
	0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x48, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
	0x73, 0x48, 0x00, 0x52, 0x02, 0x68, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a,
	0x6f, 0x6e, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a,
	0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x6b, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28,
	0x01, 0x52, 0x04, 0x6b, 0x6b, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69,
	0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f,
	0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69,
	0x74, 0x79, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x61, 0x63,
	0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x44, 0x61, 0x79, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x6b, 0x6c,
	0x6c, 0x7a, 0x7a, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x72, 0x74, 0x69,
	0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x73, 0x6b, 0x6c,
	0x6c, 0x7a, 0x7a, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x6c, 0x6c, 0x7a, 0x7a, 0x5f, 0x77, 0x69,
	0x74, 0x68, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x13, 0x73, 0x6b, 0x6c, 0x6c, 0x7a, 0x7a, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72,
	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x68, 0x6f,
	0x74, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x68,
	0x6f, 0x74, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x20,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x54, 0x72,
	0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x69,
	0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x72, 0x62, 0x69,
	0x74, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0d, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x4b, 0x69, 0x6e, 0x64, 0x22,
	0x28, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f,
	0x77, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x10, 0x01, 0x12, 0x09,
	0x0a, 0x05, 0x70, 0x75, 0x6c, 0x73, 0x65, 0x10, 0x02, 0x22, 0x90, 0x01, 0x0a, 0x04, 0x4b, 0x69,
	0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12,
	0x08, 0x0a, 0x04, 0x77, 0x61, 0x6c, 0x6b, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x72, 0x75, 0x6e,
	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x77, 0x69, 0x6d, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05,
	0x63, 0x79, 0x63, 0x6c, 0x65, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x73, 0x6b, 0x69, 0x10, 0x05,
	0x12, 0x0a, 0x0a, 0x06, 0x72, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05,
	0x67, 0x61, 0x6d, 0x65, 0x73, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x66,
	0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x10, 0x84, 0x07, 0x12, 0x09, 0x0a, 0x04, 0x74, 0x65, 0x73,
	0x74, 0x10, 0xe4, 0x07, 0x12, 0x0a, 0x0a, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x10, 0xe5, 0x07,
	0x12, 0x0a, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x10, 0xe6, 0x07, 0x22, 0x2f, 0x0a, 0x07,
	0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0d, 0x0a, 0x09, 0x75, 0x6e, 0x64, 0x65, 0x66,
	0x69, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x72, 0x74, 0x10,
	0x01, 0x12, 0x0a, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x61, 0x6c, 0x73, 0x10, 0x02, 0x42, 0x09, 0x0a,
	0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xce, 0x02, 0x0a, 0x0c, 0x54, 0x72, 0x61,
	0x69, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63,
	0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73,
	0x79, 0x6e, 0x63, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0b, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x1b, 0x0a, 0x09,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x72,
	0x41, 0x76, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x68, 0x72, 0x41, 0x76, 0x67,
	0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x6b, 0x6c, 0x6c, 0x7a, 0x7a, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x73, 0x6b,
	0x6c, 0x6c, 0x7a, 0x7a, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x68, 0x61, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73,
	0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xd9, 0x01, 0x0a, 0x09, 0x53, 0x74,
	0x65, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x4d, 0x69, 0x6c, 0x6c,
	0x69, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x69, 0x6c, 0x6c,
	0x69, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d,
	0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x65, 0x70, 0x53,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xdc, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x72, 0x74, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x69, 0x72, 0x74, 0x68, 0x44, 0x61, 0x74, 0x65,
	0x12, 0x17, 0x0a, 0x07, 0x68, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x06, 0x68, 0x72, 0x52, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x68, 0x72, 0x5f,
	0x6d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x72, 0x4d, 0x61, 0x78,
	0x12, 0x1d, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e,
	0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x53, 0x65, 0x78, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12,
	0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52,
	0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x6f,
	0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x0e, 0x32,
	0x14, 0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61,
	0x6c, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x47,
	0x6f, 0x61, 0x6c, 0x73, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6e, 0x0a,
	0x0c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x29, 0x0a,
	0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
	0x2e, 0x6d, 0x79, 0x66, 0x69, 0x74, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52,
	0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x73, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x79, 0x66,
	0x69, 0x74, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x25, 0x0a,
	0x0d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x2a, 0xc3, 0x01, 0x0a, 0x0c, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61,
	0x6c, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x0c, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
	0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x6c, 0x6f, 0x73, 0x65, 0x5f,
	0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x63, 0x68, 0x69, 0x6c,
	0x64, 0x72, 0x65, 0x6e, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x02,
	0x12, 0x0a, 0x0a, 0x06, 0x72, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08,
	0x73, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x61, 0x6e,
	0x74, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x6c, 0x65,
	0x61, 0x72, 0x6e, 0x5f, 0x73, 0x77, 0x69, 0x6d, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x66, 0x6c,
	0x65, 0x78, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x62,
	0x6f, 0x64, 0x79, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x08, 0x12, 0x07, 0x0a,
	0x03, 0x66, 0x75, 0x6e, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x72, 0x65, 0x68, 0x61, 0x62, 0x69,
	0x6c, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0a, 0x2a, 0x2a, 0x0a, 0x03, 0x53, 0x65,
	0x78, 0x12, 0x0d, 0x0a, 0x09, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x00,
	0x12, 0x08, 0x0a, 0x04, 0x6d, 0x61, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x66, 0x65,
	0x6d, 0x61, 0x6c, 0x65, 0x10, 0x02, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x6d, 0x79, 0x66, 0x69,
	0x74, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_myfitt_proto_rawDescOnce sync.Once
	file_myfitt_proto_rawDescData = file_myfitt_proto_rawDesc
)

func file_myfitt_proto_rawDescGZIP() []byte {
	file_myfitt_proto_rawDescOnce.Do(func() {
		file_myfitt_proto_rawDescData = protoimpl.X.CompressGZIP(file_myfitt_proto_rawDescData)
	})
	return file_myfitt_proto_rawDescData
}

var file_myfitt_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_myfitt_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_myfitt_proto_goTypes = []interface{}{
	(PersonalGoal)(0),            // 0: myfitt.PersonalGoal
	(Sex)(0),                     // 1: myfitt.Sex
	(TrainingSession_Type)(0),    // 2: myfitt.TrainingSession.Type
	(TrainingSession_Kind)(0),    // 3: myfitt.TrainingSession.Kind
	(TrainingSession_Element)(0), // 4: myfitt.TrainingSession.Element
	(*StepDetails)(nil),          // 5: myfitt.StepDetails
	(*HrDetails)(nil),            // 6: myfitt.HrDetails
	(*TrainingSession)(nil),      // 7: myfitt.TrainingSession
	(*TrainingData)(nil),         // 8: myfitt.TrainingData
	(*StepsData)(nil),            // 9: myfitt.StepsData
	(*Profile)(nil),              // 10: myfitt.Profile
	(*Empty)(nil),                // 11: myfitt.Empty
	(*InputDataset)(nil),         // 12: myfitt.InputDataset
	(*OutputDataSet)(nil),        // 13: myfitt.OutputDataSet
}
var file_myfitt_proto_depIdxs = []int32{
	9,  // 0: myfitt.StepDetails.samples:type_name -> myfitt.StepsData
	10, // 1: myfitt.HrDetails.profile:type_name -> myfitt.Profile
	8,  // 2: myfitt.HrDetails.samples:type_name -> myfitt.TrainingData
	5,  // 3: myfitt.TrainingSession.steps:type_name -> myfitt.StepDetails
	6,  // 4: myfitt.TrainingSession.hr:type_name -> myfitt.HrDetails
	3,  // 5: myfitt.TrainingSession.kind:type_name -> myfitt.TrainingSession.Kind
	1,  // 6: myfitt.Profile.sex:type_name -> myfitt.Sex
	0,  // 7: myfitt.Profile.personal_goals:type_name -> myfitt.PersonalGoal
	10, // 8: myfitt.InputDataset.profile:type_name -> myfitt.Profile
	7,  // 9: myfitt.InputDataset.sessions:type_name -> myfitt.TrainingSession
	10, // [10:10] is the sub-list for method output_type
	10, // [10:10] is the sub-list for method input_type
	10, // [10:10] is the sub-list for extension type_name
	10, // [10:10] is the sub-list for extension extendee
	0,  // [0:10] is the sub-list for field type_name
}

func init() { file_myfitt_proto_init() }
func file_myfitt_proto_init() {
	if File_myfitt_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_myfitt_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StepDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HrDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TrainingSession); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TrainingData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StepsData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Profile); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Empty); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*InputDataset); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_myfitt_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OutputDataSet); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_myfitt_proto_msgTypes[2].OneofWrappers = []interface{}{
		(*TrainingSession_Steps)(nil),
		(*TrainingSession_Hr)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_myfitt_proto_rawDesc,
			NumEnums:      5,
			NumMessages:   9,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_myfitt_proto_goTypes,
		DependencyIndexes: file_myfitt_proto_depIdxs,
		EnumInfos:         file_myfitt_proto_enumTypes,
		MessageInfos:      file_myfitt_proto_msgTypes,
	}.Build()
	File_myfitt_proto = out.File
	file_myfitt_proto_rawDesc = nil
	file_myfitt_proto_goTypes = nil
	file_myfitt_proto_depIdxs = nil
}
